﻿//-----------------------------------------------------------------------
// <copyright file="IAddress.cs" company="Craig Longford (deltawolf7@gmail.com)">
//     Copyright (c) Craig Longford. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

namespace Delta.Mercury.Business.User
{
    using System;

    /// <summary>
    /// Address interface
    /// </summary>
    public interface IAddress
    {
        #region Properties
        /// <summary>
        /// Gets or sets address city
        /// </summary>
        string City { get; set; }

        /// <summary>
        /// Gets or sets address line 1
        /// </summary>
        string Line1 { get; set; }

        /// <summary>
        /// Gets or sets address line 2
        /// </summary>
        string Line2 { get; set; }

        /// <summary>
        /// Gets or sets address line 3
        /// </summary>
        string Line3 { get; set; }

        /// <summary>
        /// Gets or sets the owner unique identifier
        /// </summary>
        Guid OwnerGuid { get; set; }

        /// <summary>
        /// Gets or sets address post code
        /// </summary>
        string PostCode { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the address is the prefered billing address.
        /// </summary>
        bool PreferedBilling { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether the address is the prefered delivery address.
        /// </summary>
        bool PreferedDelivery { get; set; }

        /// <summary>
        /// Gets or sets address region
        /// </summary>
        string Region { get; set; }
        #endregion

        #region Methods
        /// <summary>
        /// Save object to database
        /// </summary>
        void Save();

        /// <summary>
        /// Delete address from database
        /// </summary>
        void Delete();

        /// <summary>
        /// Fill from database
        /// </summary>
        /// <param name="reader">Database reader</param>
        void Fill(System.Data.IDataReader reader);
        #endregion
    }
}
